Personnel often need to control complex distributed systems that include computer hardware, firmware, and software in conjunction with other special machinery. Some systems have multiple instances of computer controllers, and each of the multiple controllers may run application code, or portions of application code that that may be common to application code that is run on the other related controllers. Updating application code in such systems can be an extremely complex and difficult task.
For instance, renewable energy farms can have tens or hundreds of separate energy harvesting devices distributed over a wide area, and each of these devices may have dedicated controllers to optimize energy conversion and/or coordinate energy production with the other energy harvesting devices, for example. In some cases, personnel may need to physically go to each controller location to update software or firmware. Even if the controllers are accessible via a network, the task of keeping track of multiple classes of code libraries or controllers and appropriately updating the application code in the multiple instances and can prove challenging and time consuming.